DeliveryPlanner
Cerinta:
Sa se realizeze un server de procesare a comenzilor online plasate de clienti. Acest server va analiza o comanda si va stabili cu ajutorul algoritmului ‘Multi-Depot-Vehicle-Routing’ traseul cel mai scurt pentru un camion de a colecta produsele de la un depozit/mai multe depozite si a le livra la client.
Tehnologii:
- Server java;
- Baza de date mySql;
- Interfata server pentru client/admin realizata cu JavaFX;
- Fisiere JSON pentru comunicarea pe retea.
Clasificarea utlizatorilor
Un utilizator va putea accesa resursele din server numai prin intermediul unei aplicatii. Exista doua tipuri de aplicatii cu diferite functionalitati, aceste tipuri fiind descrise in detaliu in sectiunea 'Interfata'.
Utilizatorul 'User' este cel care se foloseste de aplicatie pentru a plasa comenzi catre server. Acestuia i se ofera pe interfata intreaga gama de produse disponibila, acesta urmand sa faca o selectie si sa o trimita la server.
Utilizatorul 'Admin' are acces la toate informatiile stocate pe server, incluzand produsele, depozitele, toate comenzile facute de utilizatori 'User' cat si rutele pentru a onora comenzile. Acesta are capacitatea de a insera, modifica, extragere si stergere de informatii din server.
Descriere interactiuni
1. Plasare comanda
Utilizatorul se va conecta la server folosind o aplicatie creata pentru a accesa produsele disponibile si pentru a plasa o comanda. Dupa ce utilizatorul a selectat produsele, incluzand cantitatea, dorite, aplicatia va prelua informatiile respective si le va converti intr-un fisier JSON. Acest fisier va fi trimis in retea catre server, care acesta va stoca fisierul in folder-ul denumit 'Orders'.
2. Modificare baza de date
Aceasta sectiune descrie cazul in care un admin trebuie sa altereze informatii din baza de date. In primul rand trebuie sa prezentam structura bazei de date.
Baza de date este formata din 3 tabele: 'Deposit', 'Product' si 'Prod_In Depo'. Fiecare tabel va stoca informatii referitoare la un produs, un depozit si produsele dintr-un anumit depozit. Tabelului 'Prod_In_Depo' ne ajuta sa asignam la un ID_Deposit mai multe ID_Product astfel incat firma sa poata tine evidenta produselor care se afla intr-un depozit.
Utlizatorul 'Admin' poate insera, modifica sau sterge valori din aceste trei tabele folosindu-se de a doua versiune de aplicatie, dedicata utilizatorilor din cadrul firmei, care contine functiile necesare pentru a efectua operatiile enuntate.
3. Generare rute pentru livrarea produselor
Pe server este implementat algoritmul pentru determinarea celei mai scurte rute pentru a colecta toate produsele necesare pentru livrare. Acest algoritm va rula numai cand un utilizator 'Admin' va selecta un fisier/un set comenzi pentru livrare. Astfel, garantam faptul ca drumul cel mai scurt va fi calculat cu cele mai actuale informatii din baza de date.